/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package configuraciones;

//import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.be.Grupo;

/**
 *
 * @author Lizardo Rios
 */
public class GrupoController {
    private GrupoDelegate delegado;
    private Grupo grupo;
    private List<Grupo> listaGrupo;

    /*********************** Constructor de la clase *************************/
    public GrupoController() {
        inicializar();
    }

    /*************************** Sets y Gettters *****************************/
    public Grupo getGrupo() {
        return grupo;
    }
    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }
    
    public List<Grupo> getListaGrupo() {
        return listaGrupo;
    }
    public void setListaGrupo(List<Grupo> listaGrupo) {
        this.listaGrupo = listaGrupo;
    }

    public GrupoDelegate getDelegado() {
        return delegado;
    }

    /**************************** Metodos ************************************/
    public String inicializar() {
        grupo = new Grupo();
        delegado = new GrupoDelegate();
        listaGrupo = new ArrayList<Grupo>();
        return listar();
    }

    public String guardar() {
        try {
            delegado.create(grupo);
            grupo = new Grupo();
        } catch(Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo eliminar el grupo", FacesMessage.SEVERITY_ERROR);
            mostrarMensaje("FATAL: ", ex.getMessage(), FacesMessage.SEVERITY_FATAL);
        }
        return null;
    }

    public String actualizar() {
        try {
            System.out.println("Grupo: " + grupo);
            System.out.println("Nombre: " + grupo.getGrpGrupo());
            System.out.println("Descripcion: " + grupo.getGrpDescripcion());
            delegado.edit(grupo);
        } catch(Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo eliminar el grupo", FacesMessage.SEVERITY_ERROR);
            mostrarMensaje("FATAL: ", ex.getMessage(), FacesMessage.SEVERITY_FATAL);
        }
        return null;
    }

    public String eliminar() {
        try {
            delegado.remove(grupo);
        } catch(Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo eliminar el grupo", FacesMessage.SEVERITY_ERROR);
            mostrarMensaje("FATAL: ", ex.getMessage(), FacesMessage.SEVERITY_FATAL);
        }
        return listar();
    }

    public String listar() {
        try {
            grupo = new Grupo();
            listaGrupo = delegado.findAll();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo listar los grupos", FacesMessage.SEVERITY_ERROR);
            mostrarMensaje("FATAL: ", ex.getMessage(), FacesMessage.SEVERITY_FATAL);
        }
        return "listar";
    }
    
    public SelectItem[] getComboGrupos(){
        try{
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            List<Grupo> listaGrupos = delegado.findAll();
            selects = new SelectItem[listaGrupos.size()];
            int cont = 0;
            for(Grupo grp : listaGrupos){
                SelectItem item = new SelectItem(grp.getGrpGrupo(), grp.getGrpGrupo());
                selects[cont] = item;
                cont++;
            }
            return selects;
        }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen grupos");
            selects[0] = item;
            return selects;
        }
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

}
